[小ネタ]任意のタグを持つリソースをAWS Backupで取得するCloudFormationテンプレート
はじめに
こんにちは。大阪オフィスの林です。
AWS Bakcupを使っていたのですが、作成に際してGUIからの操作だと少々手間だったのでCloudFormationを作りました。そんな内容を今日はまとめておきたいと思います。
今回やること
まずCFnのコードです
AWSTemplateFormatVersion: "2010-09-09" Description: "Backup Plan template" # ------------------------------------------------------------# # Input Parameters # ------------------------------------------------------------# Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Parameters: - BackupPlanName - BackupVaultName - cron - SelectionName - Lifecycle - TagKey - TagValue Parameters: BackupPlanName: Description: Please type the BackupPlanName. Type: String Default: BackupPlanName BackupVaultName: Description: Please type the BackupVaultName. Type: String Default: BackupVaultName #バックアップスケジュールをスタック作成時のパラメータとして入力できるようにします。 cron: Description: Please type the cron. Type: String Default: cron(00 14 * * ? *) SelectionName: Description: Please type the SelectionName. Type: String Default: TagBasedBackup #バックアップデータの有効期限をスタック作成時のパラメータとして入力できるようにします。 Lifecycle: Description: Please type the Lifecycle. Type: String Default: 7 #タグのキー名をスタック作成時のパラメータとして入力できるようにします。 TagKey: Description: Please type the TagKey. Type: String Default: TagKey #タグの値をスタック作成時のパラメータとして入力できるようにします。 TagValue: Description: Please type the TagValue. Type: String Default: TagValue Resources: BackupVaultWithThinBackups: Type: "AWS::Backup::BackupVault" Properties: BackupVaultName: !Ref BackupVaultName BackupPlanWithThinBackups: Type: "AWS::Backup::BackupPlan" Properties: BackupPlan: BackupPlanName: !Ref BackupPlanName BackupPlanRule: - RuleName: "RuleForDailyBackups" TargetBackupVault: !Ref BackupVaultWithThinBackups #今回はCronでスケジュールを指定しています。時間はUTCで指定します。上記パラメータで指定された値を挿入します。 ScheduleExpression: !Ref cron Lifecycle: DeleteAfterDays: 7 CompletionWindowMinutes: 120 StartWindowMinutes: 60 DependsOn: BackupVaultWithThinBackups TagBasedBackupSelection: Type: "AWS::Backup::BackupSelection" Properties: BackupSelection: SelectionName: !Ref SelectionName IamRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/service-role/AWSBackupDefaultServiceRole" ListOfTags: - ConditionType: "STRINGEQUALS" #上記パラメータで指定されたタグキーを挿入します。 ConditionKey: !Ref TagKey #上記パラメータで指定されたタグの値を挿入します。 ConditionValue: !Ref TagValue BackupPlanId: !Ref BackupPlanWithThinBackups DependsOn: BackupPlanWithThinBackups
やってみた
Name
と付く部分は任意の名前を付けて頂ければいいのですが、下記は環境に応じた値を指定してください。
UTC時間でスケジュールを設定します。例えば日本時間(JST)で0時にバックアップを実行したければ
cron(00 15 * * ? *)
とします。23時にバックアップ実行したければcron(00 14 * * ? *)
とします。
バックアップデータの有効期限(保持期間)を指定します。
バックアップ対象とするリソースに付けるタグのキー名を入力します。
バックアップ対象とするリソースに付けたタグの値を入力します。
今回設定した内容だと、毎日23時
にBackup
というタグでOn
という値を持つリソースをバックアップするというプランが作成されます。また取得したバックアップデータの有効期限は7日
に設定されます。
まとめ
手動でポチポチと設定していくとどんな設定があるのか視覚的に全体的にわかるのがメリットと思ってるのですが慣れてこれば手作業は手間ですよね。これに限らず様々な作業をどんどん効率的にしていきましょう!
以上、大阪オフィスの林がお送りしました!